import * as Cesium from 'cesium';

export const initViewer = () => {
  // 设置cesium 静态资源路径
  window.CESIUM_BASE_URL = '/';

  // 天地图 官网申请的key https://console.tianditu.gov.cn/api/key
  const webKey = '01fc395160d8eb3b82aefe65b2280e58';

  Cesium.Ion.defaultAccessToken =
    'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJmNDkwYWVhOS0wNzI5LTQ3OTEtOWFiMC1kY2M3MTFiM2I2NWQiLCJpZCI6MTkyNTU1LCJpYXQiOjE3MDY1MTM0MTh9.YAPVHr1d7PBuWayCXM9deCxKg3AbtsXUJiVpubVS3NY';

  // 设置默认视角 [笛卡尔坐标系 转换为 世界坐标系]
  // api https://cesium.com/learn/cesiumjs/ref-doc/Rectangle.html
  // Cesium.Camera.DEFAULT_VIEW_RECTANGLE = Cesium.Rectangle.fromDegrees(
  //   89.5,
  //   20.4,
  //   110.4,
  //   61.2
  // );

  // 地球视图，底图加载
  const viewer = new Cesium.Viewer('container', {
    //信息窗口
    infoBox: true, // 可查看某个建筑的详细信息

    //显示查询按钮
    geocoder: false,
    //home按钮
    homeButton: false,
    // 控制查看器的显示模式-地球/平面
    sceneModePicker: false,
    // 是否显示图层选择
    baseLayerPicker: false,
    //帮助按钮
    navigationHelpButton: false,
    //播放动画
    animation: false,
    //时间线
    timeline: false,
    //全屏模式
    fullscreenButton: false,
    //设置地形
    terrainProvider: Cesium.createWorldTerrain({
      requestWaterMask: true, // 水纹效果  海里面有波浪的效果
      requestVertextNormal: true, // 光照效果
    }),

    // 添加谷歌影像图 https://blog.csdn.net/GIS_yuhua/article/details/89765167
    imageryProvider: new Cesium.UrlTemplateImageryProvider({
      // url: '/apiWeixing/vt/lyrs=s&hl=zh-CN&x={x}&y={y}&z={z}&s=Gali',
      url: '/apiGugo/maps/vt?lyrs=s@800&x={x}&y={y}&z={z}',
      tilingScheme: new Cesium.WebMercatorTilingScheme(),
      minimumLevel: 1,
      maximumLevel: 30,
    }),
  });

  //隐藏cesium Icon-logo
  viewer.cesiumWidget.creditContainer.style.display = 'none';

  // 广州塔
  const positon = Cesium.Cartesian3.fromDegrees(113.3191, 23.109, 1000);

  viewer.camera.flyTo({
    destination: positon,
    duration: 2,
  });

  // viewer.camera.setView({
  //   destination: positon,
  //   duration: 2,
  //   orientation: {
  //     heading: Cesium.Math.toRadians(-40), // 方向
  //     pitch: Cesium.Math.toRadians(-20), // 倾斜角度，负值表示向下倾斜
  //     roll: 0.0, // 翻滚角度
  //   },
  // });

  return viewer;
};

// npm api https://www.npmjs.com/package/cesium-navigation-es6
export const CesiumNavigationOptions = {
  // 用于在使用重置导航重置地图视图时设置默认视图控制。接受的值是Cesium.Cartographic 和 Cesium.Rectangle.
  // options.defaultResetView = Rectangle.fromDegrees(80, 22, 130, 50)
  // defaultResetView = new Cartographic(CesiumMath.toRadians(111.50623801848565), CesiumMath.toRadians(2.8997206760441205), 8213979.400955964)
  //相机方向
  orientation: {
    heading: Cesium.Math.toRadians(90),
    pitch: Cesium.Math.toRadians(-50),
    roll: Cesium.Math.toRadians(0),
  },
  //相机延时
  duration: 4, //默认为3s

  // 用于启用或禁用罗盘。true是启用罗盘，false是禁用罗盘。默认值为true。如果将选项设置为false，则罗盘将不会添加到地图中。
  enableCompass: true,
  // 用于启用或禁用缩放控件。true是启用，false是禁用。默认值为true。如果将选项设置为false，则缩放控件将不会添加到地图中。
  enableZoomControls: true,
  // 用于启用或禁用距离图例。true是启用，false是禁用。默认值为true。如果将选项设置为false，距离图例将不会添加到地图中。
  enableDistanceLegend: true,
  // 用于启用或禁用指南针外环。true是启用，false是禁用。默认值为true。如果将选项设置为false，则该环将可见但无效。
  enableCompassOuterRing: true,

  //修改重置视图的tooltip
  resetTooltip: '重置视图',
  //修改放大按钮的tooltip
  zoomInTooltip: '放大',
  //修改缩小按钮的tooltip
  zoomOutTooltip: '缩小',
};
